package short_semester.questionnaire_planet.dao;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import short_semester.questionnaire_planet.entity.User;
import short_semester.questionnaire_planet.pojo.Questionnaire;
import short_semester.questionnaire_planet.pojo.QuestionnaireRecord;

import javax.transaction.Transactional;
import java.util.List;
import java.util.Optional;

public interface QuestionnaireRecordDao extends JpaRepository<QuestionnaireRecord, Integer> {
    Optional<QuestionnaireRecord> findByUserAndQuestionnaire(
            User user, Questionnaire questionnaire);
    
    List<QuestionnaireRecord> findByQuestionnaire(Questionnaire questionnaire);
    
    List<QuestionnaireRecord> findByQuestionnaireAndIsSubmittedTrue(Questionnaire questionnaire);
    
    int countByQuestionnaireAndIsSubmittedTrue(Questionnaire questionnaire);
    
    Optional<QuestionnaireRecord> findByUuidAndQuestionnaire(String uuid,Questionnaire questionnaire);

    @Transactional
    @Modifying
    void deleteByQuestionnaire(Questionnaire questionnaire);

    @Transactional
    @Modifying
    void deleteByQuestionnaireAndUser(Questionnaire questionnaire, User user);
    
    QuestionnaireRecord findByQuestionnaireAndUser(Questionnaire questionnaire, User user);

    int countByQuestionnaireAndIsSubmittedTrueAndGradeAfter(Questionnaire questionnaire,Integer grade);
}

